1181번 단어 정렬

Day 14 13단계 20231108

코드번호 메모리 코드길이 처리시간 배열종류 비교방법 출력방법
1번 26300 KB 736 B 1820 ms ArrayList length() 차이, charAt() 비교 System.out.println()
2번 25448 KB 616 B 2084 ms ArrayList length() 차이, compareTo() System.out.println()
3번 28244 KB 844 B 1584 ms ArrayList length() 차이, charAt() 비교 System.out.println(sb.toString())
4번 28084 KB 953 B 396 ms String[] length() 차이, charAt() 비교 System.out.println(sb.toString())
5번 28716 KB 804 B 368 ms String[] length() 차이, compareTo() System.out.println(sb.toString())
6번 29560 KB 977 B 388 ms String[] length() 차이, compareTo() br.write(sb.toString())
7번 22640 KB 906 B 352 ms String[] length() 차이, compareTo() br.write(strArr[i])

1번. 내 첫 풀이 코드

import java.io.*;
import java.util.*;

public class Main {
	public static void main(String[] args) throws IOException{
		
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		int n = Integer.parseInt(br.readLine());
		
		List<String> list = new ArrayList<>();
		for(int i = 0; i < n; i++) {
			String str = br.readLine();
			if (!list.contains(str)) list.add(str);
		}
		
		list.sort((s1, s2) -> {
			if (s1.length() != s2.length()) return s1.length() - s2.length();
			else {
				for (int i = 0; i < s1.length(); i++) {
				 if (s1.charAt(i) != s2.charAt(i)) 
					 return s1.charAt(i) - s2.charAt(i);
				}
			}
			return s1.length() - s2.length();
		});
		
		for(String s : list) System.out.println(s); 
	}
}

2번. 1차 수정코드

import java.io.*;
import java.util.*;

public class Main {
	public static void main(String[] args) throws IOException{
		
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		int n = Integer.parseInt(br.readLine());
		
		List<String> list = new ArrayList<>();
		for(int i = 0; i < n; i++) {
			String str = br.readLine();
			if (!list.contains(str)) list.add(str);
		}
		
		list.sort((s1, s2) -> {
			if (s1.length() == s2.length()) { // 1차 수정 테스트
				return s1.compareTo(s2);
			}
			return s1.length() - s2.length();
		});
		
		for(String s : list) System.out.println(s); 
	}
}

3번. 2차 수정코드

import java.io.*;
import java.util.*;

public class Main {
	public static void main(String[] args) throws IOException{
		
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		int n = Integer.parseInt(br.readLine());
		
		List<String> list = new ArrayList<>();
		for(int i = 0; i < n; i++) {
			String str = br.readLine();
			if (!list.contains(str)) list.add(str);
		}
		
		list.sort((s1, s2) -> {
			if (s1.length() != s2.length()) return s1.length() - s2.length();
			else {
				for (int i = 0; i < s1.length(); i++) {
				 if (s1.charAt(i) != s2.charAt(i)) 
					 return s1.charAt(i) - s2.charAt(i);
				}
			}
			return s1.length() - s2.length();
		});
		
		StringBuilder sb = new StringBuilder(); // 2차 수정 테스트
		for(String s : list) {
			sb.append(s+"\n");
		}
		System.out.println(sb.toString());
	}
}

4번. 3차 수정코드

import java.io.*;
import java.util.*;

public class Main {
	public static void main(String[] args) throws IOException{
		
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		int n = Integer.parseInt(br.readLine());
		
		String[] strArr = new String[n]; // 3차 수정 테스트
		for(int i = 0; i < n; i++) {
			strArr[i] = br.readLine();
		}
		
		Arrays.sort(strArr, ((s1, s2) -> { // 3차 수정 테스트
			if (s1.length() != s2.length()) return s1.length() - s2.length();
			else {
				for (int i = 0; i < s1.length(); i++) {
					if (s1.charAt(i) != s2.charAt(i)) return s1.charAt(i) - s2.charAt(i);
				}
			}
			return s1.length() - s2.length();
		}));
		
		StringBuilder sb = new StringBuilder();
		sb.append(strArr[0]+"\n"); // 3차 수정 테스트
		for(int i = 1; i < strArr.length; i++) {
			if(!strArr[i].equals(strArr[i-1])) {
				sb.append(strArr[i]+"\n");
			}
		}
		
		System.out.println(sb.toString());
	}
}

5번. 4차 수정코드

import java.io.*;
import java.util.*;

public class Main {
	public static void main(String[] args) throws IOException{
		
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		int n = Integer.parseInt(br.readLine());
		
		String[] strArr = new String[n]; // 3차 수정 테스트
		for(int i = 0; i < n; i++) {
			strArr[i] = br.readLine();
		}
		
		Arrays.sort(strArr, ((s1, s2) -> { // 4차 수정 테스트
			if (s1.length() == s2.length()) return s1.compareTo(s2);
			return s1.length() - s2.length();
		}));
		
		StringBuilder sb = new StringBuilder();
		sb.append(strArr[0]+"\n"); // 3차 수정 테스트
		for(int i = 1; i < strArr.length; i++) {
			if(!strArr[i].equals(strArr[i-1])) {
				sb.append(strArr[i]+"\n");
			}
		}
		
		System.out.println(sb.toString());
	}
}

6번. 5차 수정코드

import java.io.*;
import java.util.*;

public class Main {
	public static void main(String[] args) throws IOException{
		
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		// 5차 수정 테스트
		BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        int n = Integer.parseInt(br.readLine());
		
		String[] strArr = new String[n]; // 3차 수정 테스트
		for(int i = 0; i < n; i++) {
			strArr[i] = br.readLine();
		}
		
		Arrays.sort(strArr, ((s1, s2) -> { // 4차 수정 테스트
			if (s1.length() == s2.length()) return s1.compareTo(s2);
			return s1.length() - s2.length();
		}));
		
		StringBuilder sb = new StringBuilder();
		sb.append(strArr[0]+"\n"); // 3차 수정 테스트
		for(int i = 1; i < strArr.length; i++) {
			if(!strArr[i].equals(strArr[i-1])) {
				sb.append(strArr[i]+"\n");
			}
		}
		 bw.write(sb.toString()); // 5차 수정 테스트
		 
		 bw.flush();
		 bw.close();
		 br.close();
	}
}

7번. 6차 수정코드

import java.io.*;
import java.util.*;

public class Main {
	public static void main(String[] args) throws IOException{
		
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		// 5차 수정 테스트
		BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        int n = Integer.parseInt(br.readLine());
		
		String[] strArr = new String[n]; // 3차 수정 테스트
		for(int i = 0; i < n; i++) {
			strArr[i] = br.readLine();
		}
		
		Arrays.sort(strArr, ((s1, s2) -> { // 4차 수정 테스트
			if (s1.length() == s2.length()) return s1.compareTo(s2);
			return s1.length() - s2.length();
		}));
		
		bw.write(strArr[0]+"\n"); // 6차 수정 테스트
		for(int i = 1; i < strArr.length; i++) {
			if(!strArr[i].equals(strArr[i-1])) {
				 bw.write(strArr[i]+"\n"); // 6차 수정 테스트
			}
		}
		 
		 bw.flush();
		 bw.close();
		 br.close();
	}
}